package com.example.demorabbitmqlisten.rabbitmq;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data;

/**
 * MQ基础对象
 *
 * @author rockzhan 2021-04-08 18:39
 * @version 1.0
 */
@Data
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@JsonPropertyOrder(alphabetic = true)
public class MqBaseMessage {

    /** 消息头 */
    @JsonProperty("messageHeader")
    private MessageHeader messageHeader;

    /** 消息体 SM4国密4解密 */
    @JsonProperty("payload")
    private String payload;

    /** RSA签名，字段排除空字段、自然排序后私钥解密 */
    @JsonProperty("sign")
    private String sign;

    /**
     * 消息头
     *
     * @author rockzhan 2021-04-08 18:42
     */
    @Data
    @JsonInclude(value = JsonInclude.Include.NON_NULL)
    @JsonPropertyOrder(alphabetic = true)
    public static class MessageHeader{

        /** 云平台销售商的Id(clientId由云平台生成，并分配给各ERP端，用于表示ERP的身份。它其实就是云平台中与ERP对应的销售商的Id) */
        @JsonProperty("clientId")
        private String clientId;

        /** 数据来源 */
        @JsonProperty("channel")
        private String channel;

        /** 消息业务类型 */
        @JsonProperty("operationType")
        private String operationType;

        /** 数据发送时间，毫秒数 */
        @JsonProperty("timestamp")
        private String timestamp;
    }
}
